package com.moliku.insurance.model.entity.generali;

import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;

import java.io.Serializable;
import java.util.List;

/**
 * @author 七分
 * @version 1.0
 * @date 2021/3/3 10:28
 * @explain 中意现代投保对象
 */
@lombok.Data
public class Data implements Serializable {
    /**
     * 基本信息
     */
    private PolicyInfo policyInfo;
    /**
     * 投保人
     */
    private Holder holder;
    /**
     * 被保人
     */
    private List<Insured> insureds;
    /**
     * 受益人
     */
    private List<Beneficiary> beneficiaryList;


    /*********退保所用字段*********/
    /**
     * 需要处理的保单号
     */
    private String policyNumber;
    /**
     * 投保人姓名
     */
    private String policyHolder;


    /**
     * 内部类 中意现代投保单基本信息
     */
    @AllArgsConstructor
    @NoArgsConstructor
    @Getter
    @Setter
    public static class PolicyInfo {
        /**
         * 保险计划代码
         */
        private String planCode;
        /**
         * 扩展附加计划代码
         */
        private String extendedPlanCode;
        /**
         * 起保时间
         * yyyy-MM-dd HH:mm:ss，若为整点则起保年月日内容为00:00:00
         */
        public String transactionEffDate;
        /**
         * 终保时间 yyyy-MM-dd HH:mm:ss，若为整点则终保年月日内容为23:59:59
         */
        public String transactionExpDate;
        /**
         * 交通类型
         * 01 航班号
         * 02 车次
         * 03 船次
         * 04 其他
         */
        private String noType;
        /**
         * 交通工具代码
         */
        private String noCode;
        /**
         * 出发地
         */
        private String travelFromAddress;
        /**
         * 目的地
         */
        private String travelToAddress;
        /**
         * 投保份数 默认为1
         */
        private Integer copiesCout;
        /**
         * 保单总金额
         */
        private Double expectedPremium;
        /**
         * 备注
         */
        private String remark;
    }

    /**
     * 内部类 投保人信息
     */
    @AllArgsConstructor
    @NoArgsConstructor
    @Getter
    @Setter
    public static class Holder {
        /**
         * 投保人姓名
         */
        private String name;
        /**
         * 投保人性别 1男 2女
         */
        private String sex;
        /**
         * 投保人出生日期 yyyy-MM-dd
         */
        private String birthday;
        /**
         * 投保人证件类型
         */
        private String idType;
        /**
         * 投保人证件类型
         */
        private String idNum;
        /**
         * 电话
         */
        private String mobile;
        /**
         * 邮箱
         */
        private String email;
        /**
         * 地址
         */
        private String address;
    }

    /**
     * 被保人信息
     */
    @AllArgsConstructor
    @NoArgsConstructor
    @Getter
    @Setter
    public static class Insured {
        /**
         * 被保人序号
         */
        private Integer Id;
        /**
         * 姓名
         */
        private String name;
        /**
         * 英文名
         */
        private String ename;
        /**
         * 性别
         */
        private String sex;
        /**
         * 出生日期 yy-MM-dd
         */
        private String birthday;
        /**
         * 被保人证件类型
         */
        private  String idType;
        /**
         * 被保人证件号码
         */
        private String idNum;
        /**
         * 电话
         */
        private String mobile;
        /**
         * 邮箱
         */
        private String email;
        /**
         * 地址
         */
        private String address;
        /**
         * 与被保人关系
         */
        private Integer relaToInsured;
    }
    /**
     * 受益人信息
     */
    @AllArgsConstructor
    @NoArgsConstructor
    @Getter
    @Setter
    public static class Beneficiary{
        /**
         * 受益顺序
         */
        private Integer beneficiaryOrder;
        /**
         * 受益份额
         * 所有受益人份额加起来必须为100
         */
        private Double interestPercent;
        /**
         * 受益人姓名
         */
        private String beneficiaryName;
        /**
         * 受益人性别
         */
        private String beneficiarySex;
        /**
         * 受益人生日 yy-MM-dd
         */
        private String beneficiaryBirthday;
        /**
         * 受益人证件类型
         */
        private String beneficiaryIDType;
        /**
         * 受益人证件号码
         */
        private String beneficiaryIDNo;
        /**
         * 证件有效期
         */
        private String idExpDate;
        /**
         * 与被保人关系
         */
        private String relationToInsured;
        /**
         * 受益人邮箱
         */
        private String beneficiaryEmail;
        /**
         * 电话
         */
        private String beneficiaryTelephone;
        /**
         * 联系地址
         */
        private String beneficiaryAddress;
        /**
         * 所属被保人id，当前受益人属于哪个被保人
         */
        private Integer pid;

    }
}
